package com.ctg.payroll2.dao.payment;

import java.sql.SQLException;
import java.util.List;

import com.ctg.payroll2.bean.common.ColumnModel;
import com.ctg.payroll2.bean.filter.payment.PayClazzItemFilter;
import com.ctg.payroll2.bean.po.payment.PayClassitem;
import com.ctg.payroll2.bean.po.payment.PayClassitemLimitDate;
import com.ctg.platform.util.Page;

public interface PayClazzItemDao {
	List<ColumnModel> getColumnModel(Long payClassId);
	List<ColumnModel> getColumnModelHis(PayClazzItemFilter filter);
	/**
	 * 翻页查询薪资项目
	 * @param filter 过滤条件
	 * @return
	 */
	Page getPayItemListByFilter(PayClazzItemFilter filter);
	/**
	 * 删除方法
	 * @param ids 传入的id字符串
	 * @return
	 */
	int deletePayItemByIds(String ids) throws SQLException;
	int fakeDeletePayItemByIds(String ids) throws SQLException;
	/**
	 * 新增一条薪资项目
	 * @param payItem 薪资项目
	 * @return 主键
	 */
	Long insertPayItem(PayClassitem payItem);
	/**
	 * 查询薪资项目
	 * @param filter 过滤条件
	 * @return
	 */
	List<PayClassitem> queryPayItemByFilter(PayClazzItemFilter filter);
	/**
	 * 修改薪资项目
	 * @param payItem 薪资项目
	 * @return 被修改的记录数
	 */
	int modifyPayItem(PayClassitem payItem);
	/**
	 * 修改薪资项目(所有字段)
	 * @param payItem 薪资项目
	 * @return 被修改的记录数
	 */
	int modifyPayItemAll(PayClassitem payItem);
	/**
	 * 根据薪资项目表id查找时间限制列表
	 * @param id 薪资项目表id
	 * @return 时间限制列表
	 */
	List<PayClassitemLimitDate> getTimeLimitByPayItemId(Long id);
	/**
	 * 增加一条时间限制
	 * @param limitTime 时间限制
	 * @return 主键
	 */
	Long insertTimeLimit(PayClassitemLimitDate limitTime);
	/**
	 * 批量删除时间限制
	 * @param ids 逗号分隔的id
	 * @return 删除的数量
	 */
	int deleteTimeLimitByIds(String ids);
	/**
	 * 更新时间限制
	 * @param limitTime 时间限制
	 * @return 更新的数量
	 */
	int updateTimeLimit(PayClassitemLimitDate limitTime);
	String checkExistsInHis(String ids) throws SQLException;
	String checkExistsInFormula(String ids) throws SQLException;
	List<PayClassitem> queryForFormula(PayClassitem payClassitem);
	int validateValidAndDisplay(PayClassitem payItem);
	List<Integer> getNextSegmentOrder(PayClassitem payItem);
	public List<PayClassitem> getDisplayPayItemListByFilter(PayClazzItemFilter filter);
	String checkItemIsValid(PayClazzItemFilter filter) throws SQLException;
}
